Remove shape_combine_mask from backend. Make X11 backend use XShapeCombineMask direct...
authorAlexander Larsson <alexl@redhat.com>
Wed, 17 Dec 2008 09:53:21 +0000 (10:53 +0100)
committerAlexander Larsson <alex@localhost.localdomain>
Thu, 2 Apr 2009 08:15:16 +0000 (10:15 +0200)
gdk/gdkoffscreenwindow.c
gdk/gdkwindowimpl.h
gdk/x11/gdkwindow-x11.c

index 9b17bf87b54b4e4f462898925ab339c24f2e6e93..1fa7018e78fbc367a57c8d174f0d18ba8386c5de 100644 (file)
@@ -1001,14 +1001,6 @@ gdk_offscreen_window_set_back_pixmap (GdkWindow *window,
     g_object_ref (pixmap);
 }
 
-static void
-gdk_offscreen_window_shape_combine_mask (GdkWindow *window,
-                                         GdkBitmap *mask,
-                                         gint       x,
-                                         gint       y)
-{
-}
-
 static void
 gdk_offscreen_window_shape_combine_region (GdkWindow       *window,
                                            const GdkRegion *shape_region,
@@ -1177,7 +1169,6 @@ gdk_offscreen_window_impl_iface_init (GdkWindowImplIface *iface)
   iface->reparent = gdk_offscreen_window_reparent;
   iface->set_cursor = gdk_offscreen_window_set_cursor;
   iface->get_geometry = gdk_offscreen_window_get_geometry;
-  iface->shape_combine_mask = gdk_offscreen_window_shape_combine_mask;
   iface->shape_combine_region = gdk_offscreen_window_shape_combine_region;
   iface->set_child_shapes = gdk_offscreen_window_set_child_shapes;
   iface->merge_child_shapes = gdk_offscreen_window_merge_child_shapes;
index eff05b9b7521b4faf15e0aa4cbc09cb75f5b127c..5b252a2abf4a6ec3949ceb4c1d7335fa36ec5dab 100644 (file)
@@ -86,10 +86,6 @@ struct _GdkWindowImplIface
                                          gint            *x,
                                          gint            *y);
 
-  void         (* shape_combine_mask)   (GdkWindow       *window,
-                                         GdkBitmap       *mask,
-                                         gint             x,
-                                         gint             y);
   void         (* shape_combine_region) (GdkWindow       *window,
                                          const GdkRegion *shape_region,
                                          gint             offset_x,
index 85f81e5135e60cb44f2d0048d599f6e5e085af33..90f38964cba086c41db7421fecb2f2b8ae55b575 100644 (file)
@@ -3375,63 +3375,6 @@ gdk_window_add_colormap_windows (GdkWindow *window)
     XFree (old_windows);
 }
 
-/*
- * This needs the X11 shape extension.
- * If not available, shaped windows will look
- * ugly, but programs still work.    Stefan Wille
- */
-static inline void
-do_shape_combine_mask (GdkWindow *window,
-                      GdkBitmap *mask,
-                      gint       x,
-                      gint       y,
-                      gint       shape)
-{
-  GdkWindowObject *private = (GdkWindowObject *)window;
-  Pixmap pixmap;
-  
-#ifdef HAVE_SHAPE_EXT
-  if (GDK_WINDOW_DESTROYED (window))
-    return;
-
-  if (shape == ShapeBounding
-      ? gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))
-      : gdk_display_supports_input_shapes (GDK_WINDOW_DISPLAY (window)))
-    {
-      if (mask)
-       {
-         pixmap = GDK_PIXMAP_XID (mask);
-         
-         private->shaped = (shape == ShapeBounding);
-       }
-      else
-       {
-         x = 0;
-         y = 0;
-         pixmap = None;
-
-         private->shaped = FALSE;
-       }
-      
-      XShapeCombineMask (GDK_WINDOW_XDISPLAY (window),
-                        GDK_WINDOW_XID (window),
-                        shape,
-                        x, y,
-                        pixmap,
-                        ShapeSet);
-    }
-#endif /* HAVE_SHAPE_EXT */
-}
-
-static void
-gdk_window_x11_shape_combine_mask (GdkWindow *window,
-                                   GdkBitmap *mask,
-                                   gint       x,
-                                   gint       y)
-{
-  do_shape_combine_mask (window, mask, x, y, ShapeBounding);
-}
-
 /**
  * gdk_window_input_shape_combine_mask:
  * @window: a #GdkWindow
@@ -3486,7 +3429,18 @@ do_shape_combine_region (GdkWindow       *window,
   if (shape_region == NULL)
     {
       /* Use NULL mask to unset the shape */
-      gdk_window_shape_combine_mask (window, NULL, 0, 0);
+      if (shape == ShapeBounding
+         ? gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))
+         : gdk_display_supports_input_shapes (GDK_WINDOW_DISPLAY (window)))
+       {
+         private->shaped = FALSE;
+         XShapeCombineMask (GDK_WINDOW_XDISPLAY (window),
+                            GDK_WINDOW_XID (window),
+                            shape,
+                            0, 0,
+                            None,
+                            ShapeSet);
+       }
       return;
     }
   
@@ -4774,7 +4728,7 @@ xwindow_get_shape (Display *xdisplay,
                             ShapeBounding, &rn, &ord);
 
   if (rn == 0)
-    return NULL;
+    return gdk_region_new (); /* Empty */
   
   if (ord != YXBanded)
     {
@@ -6007,7 +5961,6 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
   iface->get_geometry = gdk_window_x11_get_geometry;
   iface->get_origin = gdk_window_x11_get_origin;
   iface->get_deskrelative_origin = gdk_window_x11_get_deskrelative_origin;
-  iface->shape_combine_mask = gdk_window_x11_shape_combine_mask;
   iface->shape_combine_region = gdk_window_x11_shape_combine_region;
   iface->set_child_shapes = gdk_window_x11_set_child_shapes;
   iface->merge_child_shapes = gdk_window_x11_merge_child_shapes;